home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BMUG Revelations
/
BMUG Revelations.toast
/
Utilities
/
Text and Speech
/
UUTool
/
uu engine
/
uuencode⁄c
/
encode.c
< prev
Wrap
C/C++ Source or Header
|
1991-06-15
|
3KB
|
134 lines
/*
REAL Simple UENG Sample App
Written by Leonard Rosenthol
6/1/91
Don't forget to copy the uu**code resource over and rename it encode.π.rsrc.
*/
#include "UUGlue.h"
/* Prototypes */
void InitToolbox(void);
void getOrigFile(SFReply *reply);
void getDestFile(SFReply *reply, Str255 destName);
OSErr encodeFiles(SFReply origFile, SFReply destFile);
char * Pstrcpy(register Str255 s1, register Str255 s2);
char * Pstrcat(register Str255 s1, register Str255 s2);
main()
{
SFReply origFile, destFile;
OSErr err;
Str255 origName;
InitToolbox();
getOrigFile(&origFile);
if (origFile.good)
{
Pstrcpy(origName, origFile.fName);
Pstrcat(origName, (StringPtr)"\p.uu");
getDestFile(&destFile, origName);
if (destFile.good)
{
err = encodeFiles(origFile, destFile);
}
}
}
void InitToolbox()
{
InitGraf(&thePort);
InitCursor();
InitFonts();
InitWindows();
InitMenus();
InitDialogs(0L);
TEInit();
FlushEvents(-1, 0);
}
void getOrigFile(SFReply *reply)
{
Point where;
SFTypeList typeList;
SetPt(&where, 50, 50);
typeList[0] = 'TEXT';
SFGetFile(where, (StringPtr)"\p", (ProcPtr)0L, 1, typeList, (ProcPtr)0L, reply);
}
void getDestFile(SFReply *reply, Str255 destName)
{
Point where;
SetPt(&where, 50, 50);
SFPutFile(where, (StringPtr)"\pName the encoded file", destName, 0L, reply);
}
OSErr encodeFiles(SFReply origFile, SFReply destFile)
{
Handle engineHdl, tableHdl;
OSErr err, err1;
int origRefNum, destRefNum;
int numbufrs = 100;
Str255 header;
long count;
err = FSOpen(origFile.fName, origFile.vRefNum, &origRefNum);
if (err == noErr)
{
err = Create(destFile.fName, destFile.vRefNum, 'MPS ', 'TEXT');
if (err == noErr)
{
err = FSOpen(destFile.fName, destFile.vRefNum, &destRefNum);
Pstrcpy(header, (StringPtr)"\pbegin 0755 ");
Pstrcat(header, origFile.fName);
Pstrcat(header, (StringPtr)"\p\r");
count = (long)header[0];
err = FSWrite(destRefNum, &count, &header[1]);
UULoad(&tableHdl, &engineHdl);
err = uuencode(origRefNum, destRefNum, numbufrs, 0L, *tableHdl, *engineHdl);
UUnload(tableHdl, engineHdl);
Pstrcpy(header, (StringPtr)"\pend\r");
count = (long)header[0];
err = FSWrite(destRefNum, &count, &header[1]);
err1 = FSClose(destRefNum);
}
err1 = FSClose(origRefNum);
}
return(err);
}
/* Some string handling routines */
char * Pstrcpy(register Str255 s1, register Str255 s2)
{
register unsigned int i;
unsigned int l = s2[0];
char *s = (char *) s1;
for( i = 0; i <= l; i++ ) {
*s1++ = *s2++;
}
return( s );
}
char * Pstrcat(register Str255 s1, register Str255 s2)
{
register unsigned int i;
unsigned int l = s2[0];
char *s = (char *) s1;
s1 = &s1[s1[0]];
for( i = 1; i <= l; i++ ) {
*++s1 = *++s2;
}
s[0] += --i;
return( s );
}